
 /**
 * 文 件 名:  BaseServiceImpl.java
 * 版    权:  TianSi Company . Copyright YYYY-YYYY,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  严华
 * 修改时间:  2012-11-4
 * <修改描述:>
 */
package com.yh.base.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yh.base.service.BaseService;


/**
 * 
 * 通用功能实现
 * 
 * @author  严华
 * @version  [版本号, 2012-11-4]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Service("baseService")
public class BaseServiceImpl extends BaseService {
    
    @Autowired
    SqlSessionFactory sqlSessionFactory;
    
    /**
     * @param <T>
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return
     */
    @Override
    public <T, K, V> List<T> findList(String sqlName, Map<K, V> param) {
        try {
            return getSqlTemplate().selectList(sqlName, param);
        } catch (Exception e) {
            e.printStackTrace();
            return new ArrayList<T>();
        }
    }
    
    /**
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return
     */
    @Override
    public <K, V> Integer comAdd(String sqlName, Map<K, V> param) {
        return getSqlTemplate().insert(sqlName, param);
    }
    
    /**
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return
     */
    @Override
    public <K, V> Integer comMod(String sqlName, Map<K, V> param) {
        return getSqlTemplate().update(sqlName, param);
    }
    
    /**
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return
     */
    @Override
    public <K, V> Integer comDel(String sqlName, Map<K, V> param) {
        return getSqlTemplate().delete(sqlName, param);
    }

    /**
     * 
     * 取得SqlSessionTemplate
     *
     * @author  严华
     * @return [参数说明]
     * 
     * @return SqlSessionTemplate [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     */
    protected SqlSessionTemplate getSqlTemplate() {
        SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
        return sqlSessionTemplate;
    }

    @Override
    public <T, K, V> T selectOne(String sqlName, Map<K, V> param) {
        return getSqlTemplate().selectOne(sqlName, param);
    }
    
}
